package org.example.types.utils;


import java.util.Map;

/**
 * @description 
 * @author yinghuashen
 * @date 2025/3/4 23:11
 * @version 1.0
 */
 
public class ThreadLocalUtils {

    /**
     * 保存用户对象的ThreadLocal  在拦截器操作 添加、删除相关用户数据
     */
    private static final ThreadLocal<String> threadLocalUserId = new ThreadLocal<>();

    private static final ThreadLocal<String> threadLocalUserName = new ThreadLocal<>();

    private static final ThreadLocal<String> threadLocalUserPhone = new ThreadLocal<>();


    /**
     * 添加当前登录用户方法  在拦截器方法执行前调用设置获取用户
     */
    public static void addCurrentUser(String userId,String userName,String userPhone){
        threadLocalUserId.set(userId);
        threadLocalUserName.set(userName);
        threadLocalUserPhone.set(userPhone);
    }

    /**
     * 获取当前登录用户id方法
     */
    public static String getCurrentUserId(){
        return threadLocalUserId.get();
    }

    /**
     * 获取当前登录用户名
     */
    public static String getCurrentUserName(){
        return threadLocalUserName.get();
    }

    /**
     * 获取当前登录用户手机号
     */
    public static String getCurrentUserPhone(){
        return threadLocalUserPhone.get();
    }

    /**
     * 从当前线程的 ThreadLocal 中移除用户信息。
     * 建议在使用完用户信息后调用此方法，以避免内存泄漏。
     */
    public static void removeUser() {
        threadLocalUserId.remove();
        threadLocalUserName.remove();
        threadLocalUserPhone.remove();
    }

}
